package com.misyi.designpattern.factory.factorymethod;

/**
 * 没有使用工厂方法模式
 *
 * @author licong
 * @date 2021-09-11 上午10:50
 */
public class WithoutFactoryMethodPatternDemo {

    public static void main(String[] args) {
        Product product1 = Product1Factory.create();
        product1.execute();
        Product product2 = Product2Factory.create();
        product2.execute();
        Product product3 = Product3Factory.create();
        product3.execute();
    }


    public interface Product {
        void execute();
    }


    public static class Product1 implements Product {

        @Override
        public void execute() {
            System.out.println("产品 1 的功能逻辑");
        }
    }

    public static class Product2 implements Product {

        @Override
        public void execute() {
            System.out.println("产品 2 的功能逻辑");
        }
    }

    public static class Product3 implements Product {

        @Override
        public void execute() {
            System.out.println("产品 3 的功能逻辑");
        }
    }

    public static class Product1Factory {
        public static Product create() {
            System.out.println("生产产品的通用逻辑");
            System.out.println("生产产品 1 的特殊逻辑");
            return new Product1();
        }
    }

    public static class Product2Factory {
        public static Product create() {
            System.out.println("通用的功能实现");
            System.out.println("生产产品 2 的特殊逻辑");
            return new Product2();
        }
    }

    public static class Product3Factory {
        public static Product create() {
            System.out.println("通用的功能实现");
            System.out.println("生产产品 3 的特殊逻辑");
            return new Product3();
        }
    }

}
